package com.zmj.tl.database.taos.mapper;

import com.zmj.tl.database.taos.domain.MeterMetric;
import com.zmj.tl.database.taos.domain.MeterSchema;
import com.zmj.tl.database.taos.domain.TreatMetric;
import com.zmj.tl.database.taos.domain.TreatSchema;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @author hd
 * @desc Meter持久层
 * @since 2024/1/29 9:49
 */
@Mapper
public interface TreatExecuteMapper {
    /**
     * 创建数据库
     */
    @Update("CREATE DATABASE IF NOT EXISTS #{dbName}")
    int createDatabase(@Param("dbName") String dbName);

    /**
     * 创建超级表
     */
    @Update("create table if not exists #{tbName} (#{metricSchema}) TAGS (#{tagSchema})")
    int createTable(@Param("tbName") String tbName, @Param("metricSchema") String metricSchema, @Param("tagSchema") String tagSchema);

    /**
     * 创建子表
     */
    @Update("create table if not exists #{stbName} using #{tbName} tags(#{tagColumn})")
    int createStable(@Param("stbName") String stbName, @Param("tbName") String spName, @Param("tagColumn") String tagColumn);

    /**
     * 删除超级表
     */
    @Delete("DROP TABLE IF EXISTS #{tbName}")
    void dropTable(@Param("tbName") String tbName);

    /**
     * 删除库
     */
    @Delete("DROP DATABASE IF EXISTS #{dbName}")
    void dropDatabase(@Param("dbName") String dbName);

    /**
     * 使用超级表新增数据
     */
    int insertOne(@Param("th") TreatSchema treatSchema, @Param("td") TreatMetric metric);

    /**
     * 使用子表表新增数据
     */
    int insertEntity(@Param("th") TreatSchema meterSchema, @Param("td") TreatMetric metric);

    /**
     * 子表批量新增
     */
    int insertBatch(@Param("th") TreatSchema meterSchema, @Param("td") TreatMetric metric, @Param("list") List<TreatMetric> list);
}
